<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>

</body>
</html>
<script>
    function outFun() {
        var num = 10;
        function inFun() {
            console.log(num);   // 非常正常的写法
        }
        return inFun;   // 返回的是 inFun函数体  核心
    }
    // 使用
    console.log(outFun());
    var demo = outFun();   // 看清楚
      // outFun()    返回的是      function inFun() {console.log(num); }
    //  相当于 这句话 var demo = function inFun() {console.log(num); }
    demo();
    // 其实，每个函数都算一个小闭包
    var key  = 10;
    function one() {
        console.log(key);
    }
    function outerFun()  // 外部函数
    {
        var a=0;    // 清空
        function innerFun()  // 内部函数
        {
            a++;
            alert(a);
        }
        return innerFun;  // 注意这里  核心
    }
    var obj=outerFun();   // 1  2
    obj();  obj();
    var obj2= outerFun();
    obj2();  obj2();   // 1  2
    // 结果是 什么 ？
    function outerFun()  // 外部函数
    {
        var a=0;    // 清空
        return  function()  // 内部函数
        {
            a++;
            alert(a);
        }

    }
</script>